<?php

if (!defined('__COLA_DIR__')) exit;

/**
 * 全局选项基类
 *
 * @author edikud
 * @package Widget
 * @copyright Copyright (c) 2019 Cola (http://www.mcooo.com)
 * @license GNU General Public License 2.0
 */
class Widget_Abstract_Options extends Widget
{

    /**
     * 以checkbox选项判断是否某个值被启用
     *
     * @access protected
     * @param mixed $settings 选项集合
     * @param string $name 选项名称
     * @return integer
     */
    protected function isEnableByCheckbox($settings, $name)
    {
        return is_array($settings) && in_array($name, $settings) ? 1 : 0;
    }
	
    /**
     * 获取原始查询对象
     *
     * @access public
     * @return Db_Query
     */
    public function select()
    {
        return $this->db->select()
		    ->from('table.options');
    }

    /**
     * 插入一条记录
     *
     * @access public
     * @param array $options 记录结构数组
     * @return integer
     */
    public function insert($options)
    {
		if($this->options->__isSet($options['name'])) { 
		    return $this->update($options['name'], $options['value']);
		}

        return $this->db->insert('table.options')
		    ->values($options)
			->affectedRows();
    }

    /**
     * 更新记录
     *
     * @access public
     * @param string $name 选项名称
     * @param mixed $settings 选项值
     * @return integer
     */
    public function update($name, $value)
    {
        return $this->options->__isSet($name) && $this->db->update('table.options')
		    ->where('name = ?', $name)
			->values(array('value'=>is_null($value) ? '' : $value))
			->affectedRows();
    }

    /**
     * 删除记录
     *
     * @access public
     * @param string $name 选项名称
     * @return integer
     */
    public function delete($name)
    {
        return $this->db->delete('table.options')
		    ->where('name = ?', $name)
			->affectedRows();
    }

}
